Librerias#

import pandas as pd
import numpy as np
from bokeh.io import curdoc, output_notebook, push_notebook, show
from bokeh.models import HoverTool, ColumnDataSource, CategoricalColorMapper, Slider, CustomJS
from bokeh.palettes import Spectral6
from bokeh.models.widgets import Slider as BokehSlider  # Rename to avoid conflicts
from bokeh.layouts import column, row
from bokeh.plotting import output_file, show
from bokeh.plotting import figure
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

Datosoutput_file(“co2_emissions.html”)#

url_co2 = 'https://raw.githubusercontent.com/lihkir/Uninorte/main/AppliedStatisticMS/DataVisualizationRPython/Lectures/Python/PythonDataSets/co2.csv'
co2 = pd.read_csv(url_co2)
url_gm = 'https://raw.githubusercontent.com/lihkir/Uninorte/main/AppliedStatisticMS/DataVisualizationRPython/Lectures/Python/PythonDataSets/gapminder.csv'
gm = pd.read_csv(url_gm)
df_gm = gm[['Country', 'region']].drop_duplicates()
df_gm.head()
df_w_regions = pd.merge(co2, df_gm, left_on ='country', right_on ='Country', how ='inner')
df_w_regions = pd.merge(co2, df_gm, left_on ='country', right_on ='Country', how ='inner')
df_w_regions = df_w_regions.drop('Country', axis='columns')
new_co2 = pd.melt(df_w_regions, id_vars=['country', 'region'])
columns = ['country', 'region', 'year', 'co2']
new_co2.columns = columns
df_co2 = new_co2[new_co2['year'].astype('int64') > 1963]
df_co2 = df_co2.sort_values(by=['country', 'year'])
df_co2['year'] = df_co2['year'].astype('int64')
df_gdp = gm[['Country', 'Year', 'gdp']]
df_gdp.columns = ['country', 'year', 'gdp']
data = pd.merge(df_co2, df_gdp, on=['country', 'year'], how='left')
data = data.dropna()
data
country region year co2 gdp
0 Afghanistan South Asia 1964 0.0863 1182.0
1 Afghanistan South Asia 1965 0.1010 1182.0
2 Afghanistan South Asia 1966 0.1080 1168.0
3 Afghanistan South Asia 1967 0.1240 1173.0
4 Afghanistan South Asia 1968 0.1160 1187.0
... ... ... ... ... ...
8817 Zimbabwe Sub-Saharan Africa 2009 0.4060 1352.0
8818 Zimbabwe Sub-Saharan Africa 2010 0.5520 1484.0
8819 Zimbabwe Sub-Saharan Africa 2011 0.6650 1626.0
8820 Zimbabwe Sub-Saharan Africa 2012 0.5300 1750.0
8821 Zimbabwe Sub-Saharan Africa 2013 0.7760 1773.0

8202 rows × 5 columns

output_notebook()
Loading BokehJS ...
regions_list = data.region.unique().tolist()
color_mapper = CategoricalColorMapper(factors=regions_list, palette=Spectral6)
source_init = ColumnDataSource(data={
    'x': data.gdp[data.year == min(data.year)],
    'y': data.co2[data.year == min(data.year)],
    'country': data.country[data.year == min(data.year)],
    'region': data.region[data.year == min(data.year)],
    'year': data.year[data.year == min(data.year)] 
})
plot = figure(title='CO2 Emissions vs GDP', y_axis_type='log')
plot.circle(
    x='x', 
    y='y', 
    fill_alpha=0.8, 
    source=source_init, 
    legend_label='region', 
    color=dict(field='region', transform=color_mapper),
    size=7
)

show(plot)
BokehDeprecationWarning: 'circle() method with size value' was deprecated in Bokeh 3.4.0 and will be removed, use 'scatter(size=...) instead' instead.
import pandas as pd
import plotly.express as px

fig = px.scatter(data, x='year', y='co2', color='region',
                 labels={
                     'co2': 'CO2 Emissions (Metric Tons per Capita)',
                     'year': 'Year'
                 },
                 title='CO2 Emissions Over Time by Region',
                 marginal_y='box')  


fig.show()

La gráfica muestra las emisiones de CO2 (dióxido de carbono) por persona en diferentes regiones del mundo desde 1970 hasta alrededor de 2010.

No te que América y Europa & Asia Central tienen las emisiones más altas por persona durante la mayor parte del periodo cubierto, con picos que superan ocasionalmente los 40 toneladas métricas por persona. Esto puede reflejar un nivel de industrialización más alto y una mayor dependencia de combustibles fósiles en estas regiones. En el caso de Asia Oriental y Pacífico muestra un incremento significativo en las emisiones por persona a partir del año 2000, lo que podría estar relacionado con el rápido desarrollo económico e industrial de países como China. Asia del Sur y África Subsahariana presentan las emisiones más bajas por persona, lo que podría indicar una menor industrialización o una infraestructura energética menos dependiente de los combustibles fósiles. Sin embargo, hay que notar el aumento en Asia del Sur después del 2000.por ultimo, Oriente Medio y Norte de África muestran una variabilidad notable, con algunos años experimentando emisiones muy altas por persona, posiblemente debido a la producción de petróleo y gas en estos lugares.

import pandas as pd
import plotly.express as px


fig = px.scatter(
    data,
    x='gdp', 
    y='co2', 
    animation_frame='year', 
    animation_group='country',
    color='region', 
    hover_name='country',
    labels={'co2': 'CO2 Emissions (Metric Tons per Capita)', 'gdp': 'GDP (US Dollars)'},
    title='Dynamic CO2 Emissions vs GDP by Region',
    marginal_y='box',  
    marginal_x='rug' 

)


fig.update_layout(
    xaxis_title='GDP (US Dollars)',
    yaxis_title='CO2 Emissions (Metric Tons per Capita)',
    xaxis=dict(type='log'), 
    yaxis=dict(range=[0, 100]) 
)


fig.show()

La gráfica muestra la relación entre las emisiones de CO2 per cápita y el PIB por persona en diferentes regiones a lo largo del tiempo.

  • Regiones más ricas, más emisiones: Hay una tendencia general de que las regiones con un PIB más alto por persona tienden a tener también emisiones más altas por persona. Esto puede reflejar el mayor consumo de energía asociado con niveles de vida más altos y economías más industrializadas.

  • Disparidad en desarrollo y emisiones: Regiones con PIB más bajo por persona, como África Subsahariana y Asia del Sur, tienden a tener emisiones más bajas por persona, lo que podría indicar una menor industrialización y, por ende, un menor uso de combustibles fósiles.

import plotly.express as px

fig = px.density_contour(
    data,
    x='gdp',
    y='co2',
    color='region',
    labels={'co2': 'CO2 Emissions (Metric Tons per Capita)', 'gdp': 'GDP (US Dollars)'},
    title='Kernel Density Estimation (KDE) Plot',
    marginal_x='rug', 
    marginal_y='histogram',
    hover_name='region'
)

fig.update_layout(
    xaxis_title='GDP (US Dollars)',
    yaxis_title='CO2 Emissions (Metric Tons per Capita)',

)

fig.show()

Concentración baja en PIB alto: La mayoría de las curvas de densidad se concentran hacia el extremo inferior del rango de PIB, indicando que la mayoría de las observaciones de estas regiones tienen un PIB más bajo. Dispersión y Emisiones: Las curvas de densidad que se extienden hacia mayores valores de PIB (como América y Europa & Asia Central) sugieren una variabilidad mayor tanto en PIB como en emisiones. Picos y Anchos: La amplitud de las curvas indica la variabilidad del PIB dentro de cada región, mientras que la altura de los picos puede sugerir dónde se concentran más típicamente las observaciones de PIB y emisiones.